package it.okkam.utility;

import it.okkam.costants.Costanti;
import it.okkam.strutturedati.ConfineComune;
import java.util.List;

import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.vocabulary.RDF;

public class FillModelComuni {
	public Model fillModelComuni(List<ConfineComune> listaComuni, String ontologiaCatasto){
		Model model = ModelFactory.createDefaultModel();
		String ontologia = "http://www.okkam.it/ont/particella_catastale.owl#";
		model.setNsPrefix("pc", "http://www.okkam.it/ont/particella_catastale.owl"); // set del prefisso
		
		for(ConfineComune comune : listaComuni){
			
			Costanti.setUriComuni();
			String comuneURI = Costanti.uriComuni.get(comune.getComune());
			
			String exMinURI = comuneURI + "/exMin";
			String exMaxURI = comuneURI + "/exMax";
			Resource extentMinResource = model.createResource(exMinURI);
			
			//add tipo 
			Property pTypeEx = model.createProperty(ontologia,"Extent");
			extentMinResource.addProperty(RDF.type, pTypeEx);
			
			//add tipo 
			Resource extentMaxResource = model.createResource(exMaxURI);
			extentMaxResource.addProperty(RDF.type, pTypeEx);

			
			Resource comuneResource = model.createResource(comuneURI);

			//add tipo 
			Property pTypeComune = model.createProperty(ontologia,"Comune");
			comuneResource.addProperty(RDF.type, pTypeComune);
			
			
			
			comuneResource.addProperty(S.haExtentMin, extentMinResource);
			comuneResource.addProperty(S.haExtentMax, extentMaxResource);
			
			
			extentMinResource.addProperty(SGeo.lat, model.createTypedLiteral(comune.getExtentComuneMin()[0]));
			extentMinResource.addProperty(SGeo.long_, model.createTypedLiteral(comune.getExtentComuneMin()[1]));
			extentMaxResource.addProperty(SGeo.lat, model.createTypedLiteral(comune.getExtentComuneMax()[0]));
			extentMaxResource.addProperty(SGeo.long_, model.createTypedLiteral(comune.getExtentComuneMax()[1]));

			comuneResource.addProperty(S.haCodiceComuneCatastale, comune.getCodiceComune());

			
		}
		
		return model;
	}
}
